" ---vim base config
syntax on             " 代码高亮
set number            " 显示当前行号
"set relativenumber    " 相对行号
set wrap              " 自动换行
set showcmd           " 显示输入命令的信息
set wildmenu          " 显示所有可以tab补全的命令
set encoding=utf-8    " 设置编码
set shiftwidth=4      " 设置系统的自动缩紧宽度为多少个空格
set tabstop=4         " 设置 tab 字符的显示宽度为多少个空格，默认值是 8
set autoindent        " 自动缩进
set hlsearch          " 搜索时，高亮显示匹配结果
set paste            " 设置粘贴模式
set showmatch         " 设置匹配模式，类似当输入一个左括号时会匹配相应的那个右括号
set clipboard=unnamed " 共享系统剪切板
set nocursorcolumn    " 不设置高亮行和列
set nocursorline      " 将高亮线更改为不是下划线
map s <nop>           " 设置单按s键，不会有操作
map S :w<CR>          " 设置保存 快捷键
map Q :q!<CR>         " 设置退出 快捷键
map R :source $MYVIMRC<CR> " 设置重新加载配置文件 快捷键

"--vim-plug
"call plug#begin('~/.vim/plugged')
call plug#begin('~/.config/nvim/plugged')
Plug 'vim-airline/vim-airline'     " 状态栏美化插件
Plug 'vim-airline/vim-airline-themes'  " 状态栏美化插件
Plug 'mhinz/vim-startify'          " 开屏页美化插件
Plug 'fatih/molokai'               " 主题
Plug 'majutsushi/tagbar'           " 显示创建一个侧边栏并显示当前打开文档的大纲、代码结构等，并具有导航功能
Plug 'scrooloose/nerdtree'         " 文件管理器 显示当前文件所在路径的目录树，并可以打开相应文件
Plug 'jiangmiao/auto-pairs'        " 自动匹配括号、引号等
Plug 'fatih/vim-go'                " vim golang 插件
Plug 'neoclide/coc.nvim', {'branch': 'release'} " 让你的 Vim/Neovim 像 VSCode 一样智能
Plug 'ianva/vim-youdao-translater' " 利用 有道词典在线版 制作的vim插件
Plug 'tpope/vim-commentary'        " 快速注释插件; 单行 快速注释/取消注释 gcc; 多行 注释/取消选中区域 gc
call plug#end()

"--- " airline状态栏 "
"let g:airline_theme                             ="luna"  " 使用luna主题配色
"let g:airline#extensions#tabline#enabled        = 1      " 顶部tab显示
"let g:airline_powerline_fonts                   = 1      " 使用powerline字体
"map <tab> :bn<CR>

"--- " thmeme molokai "
colorscheme molokai

"--- " 侧边栏并显示当前打开文档的大纲、代码结构等，并具有导航功能 "
let g:tagbar_ctags_bin = 'ctags' " tagbar 依赖 ctags 插件
let g:tagbar_width     = 30      " 设置 tagbar 的宽度为 30 列，默认 40 列
"let g:tagbar_autofocus = 1      " 打开 tagbar 时光标在 tagbar 页面内，默认在 vim 打开的文件内
let g:tagbar_left      = 1       " 让 tagbar 在页面左侧显示，默认右边
"let g:tagbar_sort      = 0      " 标签不排序，默认排序
map t :TagbarToggle<CR>          " 设定快捷键 t 打开 tagbar 窗口

"--- " 类似 文件管理器 "
map <F3> :NERDTreeMirror<CR>     " 按F3显示或关闭
map <F3> :NERDTreeToggle<CR>     " 按F3显示或关闭
let NERDTreeShowHidden=1     "显示隐藏文件（shift+i可切换是否显示隐藏文件）

"--- " 有道词典在线版 制作的vim插件 "
vnoremap <silent> <C-T> :<C-u>Ydv<CR> " 快捷键 Ctrl+t
nnoremap <silent> <C-T> :<C-u>Ydc<CR>
noremap <leader>yd :<C-u>Yde<CR>

"--- " 使用F5一键执行代码 "
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
    exec "w"
    if &filetype == 'go'
        "exec "!go build %<"
        exec "!time go run %"
    elseif &filetype == 'sh'
        :!time bash %
    elseif &filetype == 'python'
        exec "!time python3 %"
    endif
endfunc
